#!/usr/bin/env python

desc = '''
A script to extract ConstraintElimination's reproducer remarks. The extracted
modules are written as textual LLVM IR to files named reproducerXXXX.ll in the
current directory.
'''

import optrecord
import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description=desc)
    parser.add_argument(
        'yaml_dirs_or_files',
        nargs='+',
        help='List of optimization record files or directories searched '
             'for optimization record files.')

    args = parser.parse_args()

    print_progress = False
    jobs = 1

    files = optrecord.find_opt_files(*args.yaml_dirs_or_files)
    if not files:
        parser.error("No *.opt.yaml files found")
        sys.exit(1)

    all_remarks, file_remarks, _ = optrecord.gather_results(
        files, jobs, True)

    i = 0
    for r in all_remarks:
        if r[1] != 'constraint-elimination' or r[2] != 'Reproducer':
            continue
        with open('reproducer{}.ll'.format(i), 'wt') as f:
            f.write(r[7][1][0][1])
        i += 1
